package com.morningstar.common.result;

/**
 * 结果响应码
 * 结果响应码编码方式
 * 格式： *****    5位数字
 * 前两位服务编码      - 01  ~ 98
 * 后三位结果编码      - 001 ~ 999
 * 99***：系统预留编码
 * @author yls
 */
public enum ResultCode implements IResultCode {
    //成功
    SUCCESS(20000,"success"),
    //服务器异常
    SERVER_EXCEPTION(99999,"服务器繁忙，请稍后重试..."),
    //熔断
    FEED_BACK(99998,"熔断降级"),
    //权限不足
    ACCESS_DENIED(99401,"权限不足"),
    //未登入或TOKEN已过期
    UN_AUTHORIZED(99402, "未登授权或TOKEN已过期"),

    GRANT_TYPE_ERROR(99403, "不支持该认证类型"),

    INVALID_TOKEN(99406, "令牌过期请重新登入"),

    INVALID_SCOPE(99407,"不是有效的SCOPE"),

    INVALID_REFRESH_TOKEN(99408,"refresh token无效"),

    INVALID_AUTH_CODE(99409,"authorization code无效"),

    USER_LOCKED(99410,"用户已被锁定"),

    USER_INFO_ERROR(99411,"用户名或密码错误"),

    REQUEST_PARAM_ERROR(99001,"请求参数有误"),

    FLOW_NOT_EXIST(70001,"流程不存在"),
    ;
    /**
     * 响应码
     */
    private final int status;

    /**
     * 响应消息
     */
    private final String message;

    /**
     * 构造方法
     * @param code              响应码
     * @param message           响应消息
     */
    ResultCode(int code, String message) {
        this.status = code;
        this.message = message;
    }

    @Override
    public int getStatus() {
        return status;
    }


    @Override
    public String getMessage() {
        return message;
    }
}
